package com.ruoyi.common.core.utils.bean;

import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException;
import jakarta.validation.Validator;

import java.util.Set;

/**
 * bean对象属性验证
 *
 * @author ruoyi
 */
public class BeanValidators {
    /**
     * 该函数是一个静态方法，用于验证一个对象是否满足一组验证规则。
     * 它接受一个Validator对象、一个待验证的对象和一组验证组作为参数。
     * 如果对象不满足验证规则，则抛出一个ConstraintViolationException异常。
     * 具体步骤如下：
     * 使用传入的Validator对象验证传入的对象，传入的验证组参数用于指定验证规则的集合。
     * 将验证结果存储在一个Set集合中。
     * 如果Set集合不为空，则抛出一个ConstraintViolationException异常，异常的参数为验证结果的Set集合。
     *
     * @param validator
     * @param object
     * @param groups
     * @throws ConstraintViolationException
     */
    public static void validateWithException(Validator validator, Object object, Class<?>... groups) throws ConstraintViolationException {
        Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
        if (!constraintViolations.isEmpty()) {
            throw new ConstraintViolationException(constraintViolations);
        }
    }
}
